package day15;

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

/*本类用来完成Map集合相关练习
* 需求:提示并接收用户输入的一串字符,并统计出每个字符出现的次数*/
public class TestMap2 {
    public static void main(String[] args) {
        //1.提示用户输入要统计的字符串
        System.out.println("请输入您要统计的字符串:");
        //2.接收用户输入的字符串
        String input = new Scanner(System.in).nextLine();
        //3.创建map集合来保存数据,打印效果{a=2,f=5,h=1}
        /*统计的是每个字符出现的次数,所以字符是char类型,次数是int,需要使用包装类型*/
        Map<Character,Integer> map = new HashMap<>();

        //4.使用循环结构遍历用户输入的每一个字符
        for(int i = 0;i < input.length();i++){
            char key = input.charAt(i);//获取字符串上指定位置处的字符
            System.out.println("第"+i+"轮获取到的字符是:"+key);

            //5.统计每个字符出现的次数,存起来,存到map
            //5.1先拿着获取到的字符(key)查看一下是否有value
            Integer value = map.get(key);
            if(value == null){//如果判断为null,说明之前没有出现过这个字符
                map.put(key,1);//设置次数为1
            }else{//如果不是null,说明之前存过值,给之前的次数+1
                map.put(key,value+1);
            }
        }
        System.out.println("各个字符出现的频率是:");
        System.out.println(map);
    }
}
